package com.ruoyi.server.api.subscribe.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.errorCode.CommonException;
import com.ruoyi.server.api.subscribe.domain.CourseSubscribe;
import com.ruoyi.server.api.subscribe.model.CourseSubscribeModel;
import org.springframework.web.multipart.MultipartFile;

/**
 * 团课信息Service接口
 *
 * @author hjh
 * @date 2024-06-10
 */
public interface ICourseSubscribeService {
    /**
     * 查询团课信息
     *
     * @param id 团课信息主键
     * @return 团课信息
     */
    public CourseSubscribe selectCourseSubscribeById(Long id);

    /**
     * 查询团课信息列表
     *
     * @param courseSubscribe 团课信息
     * @return 团课信息集合
     */
    public List<CourseSubscribe> selectCourseSubscribeList(CourseSubscribe courseSubscribe);

    /**
     * 新增团课信息
     *
     * @param courseSubscribeModel 团课信息
     * @return 结果
     */
    public AjaxResult insertCourseSubscribe(CourseSubscribeModel courseSubscribeModel) throws Exception;

    /**
     * @param courseSubscribeModel
     * @Author hjh
     * @Description 修改团课信息
     * @Date 2024/6/11 14:19
     * @Return int
     */
    public AjaxResult updateCourseSubscribe(CourseSubscribeModel courseSubscribeModel) throws Exception;

    /**
     * 批量删除团课信息
     *
     * @param ids 需要删除的团课信息主键集合
     * @return 结果
     */
    public int deleteCourseSubscribeByIds(Long[] ids);

    /**
     * 删除团课信息信息
     *
     * @param id 团课信息主键
     * @return 结果
     */
    public int deleteCourseSubscribeById(Long id);

    /**
     * @param id
     * @Author hjh
     * @Description 更改团课状态
     * @Date 2024/6/11 14:07
     * @Return int
     */
    public AjaxResult updateCourseState(Integer id);

    /**
     * @param courseSubscribe
     * @Author hjh
     * @Description 查询团课信息（已发布）
     * @Date 2024/6/12 8:44
     * @Return java.util.List<com.ruoyi.server.api.subscribe.domain.CourseSubscribe>
     */
    public List<CourseSubscribe> getReleaseCourse(CourseSubscribe courseSubscribe);

    /**
     * @param courseSubscribe
     * @Author hjh
     * @Description 查询团课信息(过往团课)
     * @Date 2024/6/12 8:57
     * @Return java.util.List<com.ruoyi.server.api.subscribe.domain.CourseSubscribe>
     */
    public List<CourseSubscribe> getAbnormalCourse(CourseSubscribe courseSubscribe);

    /**
     * @param id
     * @param cancelCause
     * @Author hjh
     * @Description 撤销团课
     * @Date 2024/6/12 15:16
     * @Return com.ruoyi.common.core.domain.AjaxResult
     */
    public AjaxResult updateCancelRelease (Integer id,String cancelCause);
    
    /**
    * @Author hjh
    * @Description 获取当前用户所在场馆标识
    * @Date 2024/6/13 14:37
    * @Return com.ruoyi.common.core.domain.AjaxResult
    
    */
    public AjaxResult getVenueUniqueIdentifier ();

    /**
    * @Author hjh
    * @Description 获取教练信息
    * @Date 2024/6/14 10:31
    * @Return com.ruoyi.common.core.domain.AjaxResult
    
    */
    public AjaxResult getCouchInfo();
}
